package IO流_序列化流.对象字节输出流;

// 补充知识:
// 对象序列化: 把java对象写入到文件中去
// 对象反序列化: 把文件里的java对象读出来

// 补充: 如果想要实现一次序列化多个对象: 可以把对象放在ArrayList集合中储存, 然后直接对集合进行序列化即可
// 注意: ArrayList集合已经实现了序列化接口(为什么)

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Test {
    public static void main(String[] args) {
        // ObjectOutputStream: 对象字节输出流
        // 可以把Java对象进行序列化: 把Java对象存入到文件中去

        // 构造器:
        // public ObjectOutputStream(OutputStream out): 创建对象字节输出流, 包装基础的字节输出流

        // 方法:
        // public final void writeObject(object o) throws IOException: 把对象写出去



        try (
                // 2. 创建一个对象字节输出流包装原始的字节输出流
                ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Senior\\src\\IO流_序列化流\\pat.txt"));
                ){
            // 1. 创建一个Java对象.
            User u = new User("admin","张三",32,"666888");

            // 3. 序列化对象到文件中去
            // 注意: 如果只想序列化一部分, 那么就得在对象里那一部分用transient修饰
            oos.writeObject(u);
            System.out.println("序列化成功");
            // 注意: 这样直接运行会报错, Java规定: 要实现对象序列化,则对象必须实现Serializable类
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
